package yf.mall.service.app;

import com.github.pagehelper.PageInfo;
import com.yf.service.BaseService;
import yf.mall.dysdk.model.product.DyProduct;
import yf.mall.entity.KolProductEntity;
import yf.mall.entity.KolProductStatEntity;
import yf.mall.entity.custom.KolProductParam;
import yf.mall.vo.KolProductVo;
import yf.mall.vo.app.product.KolProductSumVo;
import yf.mall.vo.app.request.ProductNotifyRequest;

import javax.servlet.http.HttpServletResponse;
import java.io.InputStream;
import java.util.List;

/**
 * 商品信息表Service接口
 *
 *
 *
 * @date Tue Jul 18 14:30:26 CST 2023
 */
public interface KolProductService extends BaseService<KolProductEntity> {

    /************自动生成**************/
    List<KolProductVo> findVo(KolProductVo vo);

    KolProductVo getVo(Long id);

    int updateVo(KolProductVo vo);

    int saveVo(KolProductVo vo);

    void downLoad(HttpServletResponse response, List<KolProductVo> list);

    void downLoadSum(HttpServletResponse response, List<KolProductSumVo> list);

    void upload(InputStream file);


    /***********BACK***********/


    /***********API***********/
    PageInfo<KolProductEntity> page(KolProductParam query);

    /**
     * 同步抖音数据到数据库
     *
     * @param userId
     * @param request
     */
    void notifyDyProductToDb(Long userId, ProductNotifyRequest request);

    /**
     * 通过ID获取单个抖音抖音产品数据
     *
     * @param userId
     * @param id
     * @return
     */
    KolProductEntity reqDyProduct( Long id);

    void mergeShop(DyProduct dyProduct);


    /**
     * id name
     *
     * @return
     */
    List<KolProductEntity> findAll();


    /**
     * id name
     *
     * @return
     */
    List<KolProductEntity> findByIds(List<Long> ids);


    /**
     * 查询商品24小时销量数据
     *
     * @param productIds
     * @return
     */
    List<KolProductStatEntity> findStatByProductIds(List<Long> productIds);

    /**
     * 查询商品24小时销量数据
     * @param productId
     * @return
     */
    KolProductStatEntity findStatByProductId(Long productId);

    /**
     * 保存商品24小时销量数据
     * @param kolProductStatEntity
     * @return
     */
    boolean saveProductStat(KolProductStatEntity kolProductStatEntity);

    List<KolProductSumVo> sum();
}
